
# 位运算符

# 00000100  &
# 00001000  参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
# 00000000
print('4 按位与 8 --》', 4 & 8) # 所以 4 按位与 8 是 0 没错

# 00000100  |
# 00001000  只要对应的二个二进位有一个为1时，结果位就为1。
# 00001100
print('4 按位或 8 --》', 4 | 8)


# 00000100  <<  3
# 运算数的各二进位全部左移若干位，由"<<"右边的数指定移动的位数，高位丢弃，低位补0。
# 00100000
print('4 左移 3 --》', 4 << 3)

# 00000100  >>  3
# 把">>"左边的运算数的各二进位全部右移若干位，">>"右边的数指定移动的位数，低位丢弃，高位补0。
# 00000000
print('4 右移 3 --》', 4 >> 3)

# 00000100  ~
# 对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
# 11111011
print('4 取反 --》', ~4 )

# 00000100  ^
# 00001000 当两对应的二进位相异时，结果为1
# 00001100
print('4 位相异 8  --》', 4^8 )